Sistema

char* cdVersion(void); [em C]
cdVersion() -> (version: string) [em Lua]

Fornece como retorno o número da versão corrente da biblioteca. O string do número da versão tem o formato "major.minor.build". Por exemplo, o string "2.1.3" tem 2 como número de versão principal (major), 1 como número de versão secundário (minor) e 3 como número de versão de construção (build). O número de versão principal representa uma mudança de estrutura ou comportamento de funções, o número de versão secundário representa um ou mais drivers novos ou novas funções adicionados à biblioteca, o número de versão de construção representa uma ou mais falhas corrigidas.


Controle

cdCanvas *cdCreateCanvas(cdContext* ctx, void *data); [em C]
cdCreateCanvas(ctx: number, data: string or userdata) -> (canvas: canvas_tag) [em Lua]

Cria um canvas CD para uma superfície de visualização virtual (VVS). Uma VVS pode ser um canvas de uma janela de interface com o usuário, a página de um documento enviado para a impressora, uma imagem offscreen, o clipboard, um metafile e assim por diante. Para criar o canvas, é necessário especificar o driver no qual cada canvas se comporta.

O driver é definido pela variável driver com informações adicionais dadas no parâmetro data. Ainda que seja possível criar mais de um canvas com o mesmo par driver/data, isso não é recomendado e seu comportamento não é especificado. Cada canvas mantém suas próprias propriedades.

Em caso de falha, um valor NULL é fornecido como retorno. Os seguintes drivers pré-definidos estão disponíveis:

Drivers Baseados em Janelas

Drivers Baseados em Dispositivos

Drivers Baseados na Memória  

Drivers Baseados em Arquivos 

cdCanvas* cdCreateCanvasf(cdContext *context, char* format, ...); [em C]
[Não existe equivalente em Lua]

Idem a cdCreateCanvas, usada para o caso em que o parâmetro data é uma string composta por vários parâmetros, pode-se usar essa função com parametros equivalentes a da função printf da biblioteca padrão de C.

void cdKillCanvas(cdCanvas *canvas); [em C]
cdKillCanvas(canvas: canvas_tag) [em Lua]

Destrói um canvas criado anteriormente.

int cdActivate(cdCanvas *canvas); [em C]
cdActivate(canvas: canvas_tag) -> (status: number) [em Lua]

Ativa um canvas para desenho. Não existe um cdDeactivate explícito. Quando um novo canvas é ativado, o corrente é desativado (existe apenas um canvas ativo em um dado momento). A função fornece como retorno um status, CD_OK ou CD_ERROR, que indica se o canvas-alvo foi ativado com sucesso ou não.

cdCanvas* cdActiveCanvas(void); [em C]
cdActiveCanvas() -> (canvas: canvas_tag) [em Lua]

Fornece como retorno o canvas ativo.

cdContext* cdGetContext(cdCanvas *canvas); [em C]
cdGetContext(canvas: canvas_tag) -> (ctx: number) [em Lua]

Retorna o contexto de um determinado canvas, pode-se compará-lo com os contextos pré-definidos, tais como "CD_PS".

int cdContextCaps(cdContext* ctx); [em C]
cdContextCaps(ctx: number) -> (caps: number) [em Lua]

Retorna os recursos disponíveis naquele contexto. Para verificar se um determinado recurso está disponível realize um AND (&) binário com os valores a seguir (em Lua deve-se fazer uma soma dos valores):

CD_CAP_FLUSH
CD_CAP_CLEAR
CD_CAP_PLAY
CD_CAP_YAXIS - O eixo Y possui mesma orientação que o eixo do CD.
CD_CAP_CLIPAREA
CD_CAP_CLIPPOLY - Em geral não é implementado.
CD_CAP_MARK - Marcas são implementadas diretamente no driver (o normal é simulação).
CD_CAP_RECT - Retângulos são implementados diretamente no driver (o normal é simulação).
CD_CAP_VECTORTEXT - Texto vetorial é implementado diretamente no driver (o normal é simulação).
CD_CAP_IMAGERGB
CD_CAP_IMAGERGBA - Se não for impementado, mas se cdGetImageRGB for, então é simulado usando cdGetImageRGB e cdPutImageRGB.
CD_CAP_IMAGEMAP
CD_CAP_GETIMAGERGB
CD_CAP_IMAGESRV - Em geral só é implementado em contextos de em sistemas gráficos de janelas (Native Window e IUP).
CD_CAP_BACKGROUND
CD_CAP_BACKOPACITY
CD_CAP_WRITEMODE
CD_CAP_LINESTYLE
CD_CAP_LINEWITH
CD_CAP_WD - Funções de coordenadas de mundo são implementadas diretamente no driver (o normal é simulação).
CD_CAP_HATCH
CD_CAP_STIPPLE
CD_CAP_PATTERN
CD_CAP_FONT
CD_CAP_FONTDIM - Caso não esteja definido, a função é implementada usando-se uma heirística interna da biblioteca.
CD_CAP_TEXTSIZE - Caso não esteja definido, a função é implementada usando-se uma heirística interna da biblioteca.
CD_CAP_TEXTORIENTATION - Em geral não é implementado.
CD_CAP_PALETTE - Em geral só é implementado em contextos de em sistemas gráficos de janelas (Native Window e IUP).

void cdFlush(void); [em C]
cdFlush() [em Lua]

Possui um significado diferente para cada driver. É útil para enviar informações para dispositivos buffered e para mudar para uma página ou uma camada nova. Em todos os casos, os atributos atuais do canvas são preservados.

void cdClear(void); [em C]
cdClear() [em Lua]

Limpa o canvas ativo utilizando a cor de fundo corrente. Esta ação é interpretada de forma muito diferente em cada driver. Muitos drivers apenas desenham um retângulo com a cor de fundo corrente. NÃO é necessário chamar cdClear assim que o canvas é criado, visto que nesse momento ele já está limpo. A maioria do drivers baseados em arquivos não implementa esta função.

int cdSimulate(int mode); [em C]
cdSimulate(mode: number) -> (old_mode: number) [em Lua]

Ativa simulação de uma ou mais primitivas e clipping, para o canvas ativo. É ignorada para canvas do contexto ImageRGB, pois neste caso tudo já é simulado. Assim como, não tem efeito para primitivas que já são normalmente simuladas. Retorna a simulação anterior, mas não inclui primitivas que já são normalmente simuladas. A simulação pode ser ativada em qualquer instante, por exemplo se apenas para uma situação é necessária simulação de linha, pode-se ativar a simulação, desenhar a linha e desativar a simulação em seguida.

ATENÇÃO: o uso da simulação de clipping faz com que algumas primitivas sejam interamente simuladas, tais como Polígonos, Arcos e Setores. Seja cuidadoso ao ativar simulação de clipping.

Verifique no sub-driver de Simulação as informações de como cada simulação é feita.

Para ativar uma determinada simulação realize um AND (&) binário com os valores a seguir (em Lua deve-se fazer uma soma dos valores):

CD_SIM_NONE - Desativa todo o tipo de simulação.
CD_SIM_CLIPAREA
CD_SIM_CLIPPOLY
CD_SIM_TEXT
CD_SIM_MARK
CD_SIM_LINE
CD_SIM_RECT
CD_SIM_ARC
CD_SIM_POLYLINE
CD_SIM_BOX
CD_SIM_SECTOR
CD_SIM_POLYGON
CD_SIM_WD
CD_SIM_VECTORTEXT
CD_SIM_ALL - Ativa todas as opções de simulação.

CD_SIM_LINES - Combinação de CD_SIM_LINE, CD_SIM_RECT, CD_SIM_ARC e CD_SIM_POLYLINE.
CD_SIM_FILLS - Combinação de CD_SIM_BOX, CD_SIM_SECTOR e CD_SIM_POLYGON.
CD_SIM_CLIP - Combinação de CD_SIM_CLIPAREA e CD_SIM_CLIPPOLY.

cdState* cdSaveState(void); [em C]
cdSaveState() -> (state: state_tag) [em Lua]

Salva um estado de atributos do canvas ativo, retornando-o. A memória alocada para isto só será liberada na chamada a cdRestoreState. Não salva callbacks, estado de criação de polígonos (begin/vertex/vertex/...) e a palette.

void cdRestoreState(cdState* state); [em C]
cdRestoreState(state: state_tag) [em Lua]

Restaura um estado de atributos do canvas ativo. A memória alocada pela função cdSaveState é liberada e o ponteiro não é mais válido. Pode ser usado entre canvas de contextos diferentes.

void cdSetAttribute(char* name, char* data); [em C]
cdSetAttribute(name, data: string) [em Lua]

Modifica um atributo personalizado diretamente no driver do canvas ativo. Se o driver não possuir esse atributo, a chamada é ignorada.

void cdSetfAttribute(char* name, char* format, ...); [em C]
[Não existe equivalente em Lua]

Idem a cdSetAttribute, usada para o caso em que o parâmetro data é uma string composta por vários parâmetros, pode-se usar essa função com parametros equivalentes a da função printf da biblioteca padrão de C.

char* cdGetAttribute(char* name); [em C]
cdSetAttribute(name: string) -> (data: string) [em Lua]

Retorna um atributo personalizado do driver do canvas ativo. Se o driver não possuir esse atributo, retorna NULL.


Interpretação de Metafiles

int cdPlay(cdContext* ctx, int xmin, int xmax, int ymin, int ymax, void *data); [em C]
cdPlay(ctx, xmin, xmax, ymin, ymax: number, data: string) -> (status: number) [em Lua]

Interpreta o conteúdo gráfico (primitivas e atributos) em um determinado driver e chama funções equivalentes da biblioteca CD utilizando o canvas ativo. As primitivas são geradas dentro da região definida pelas coordenadas dadas. Se xmin,xmax,ymin e ymax forem 0 as primitivas são geradas com suas coordenadas tendo os valores originais no arquivo. Apenas alguns drivers têm esta função implementada.

Drivers disponíveis:

int cdRegisterCallback(cdContext *ctx, int cb, int(*func)(cdContext *driver, ...)); [em C]
cdRegisterCallback(ctx, cb: number, func: function) -> (status: number) [em Lua]

Utilizado para personalizar o comportamento da função cdPlay. Se você registrar uma função de callback conhecida, ela será chamada durante o loop de processamento de cdPlay.
Há uma callback padrão comum a todas as implementações de cdPlay, CD_SIZECB. Sua definição é "int cdResizeCB(cdContext *driver, int width, int height, double mm_width, double mm_height)", e ela fornece como retorno o tamanho da figura no arquivo antes que qualquer função da biblioteca CD seja chamada, de forma que você pode chamar a função cdPlay sem um canvas ativo e criar o canvas dentro da callback. Ela funciona como a função cdGetCanvasSize. Se a callback der como retorno 1, a função cdPlay é abortada.
Os identificadores das callbacks de um determinado driver devem estar no arquivo de inclusão público relativo aquele driver, com o prefixo "CD_XX_CB_", onde XX identifica aquele driver.